当前位置: 首页 > wzjs >正文

食品建设网站前的市场分析做网站 需要注意什么

食品建设网站前的市场分析,做网站 需要注意什么,如何做旅游休闲网站,页面设计的英文1. 基本概念 在 C 中,引用作为方法的返回值(即返回一个引用)是一种常见但需要谨慎使用的技巧。它允许函数返回对内部数据的引用,从而避免拷贝开销,但同时也带来了生命周期和可修改性的问题。 (1) 返回引用的含义 函数返…

1. 基本概念

在 C++ 中,引用作为方法的返回值(即返回一个引用)是一种常见但需要谨慎使用的技巧。它允许函数返回对内部数据的引用,从而避免拷贝开销,但同时也带来了生命周期和可修改性的问题。

(1) 返回引用的含义

  • 函数返回一个引用时,返回的是对某个对象的别名(即该对象的另一个名字),而不是对象的副本。

  • 调用者可以通过返回的引用直接操作原始对象(如果引用是非 const 的)。

(2) 语法示例

class MyClass {
public:int value;MyClass(int v) : value(v) {}// 返回非 const 引用(允许修改内部数据)int& getValue() { return value; }// 返回 const 引用(只读访问)const int& getValue() const { return value; }
};int main() {MyClass obj(42);int& ref = obj.getValue();  // ref 是 obj.value 的别名ref = 100;                  // 修改了 obj.valuestd::cout << obj.value;     // 输出 100const int& cref = obj.getValue();  // 只读访问// cref = 200;               // 错误!不能修改 const 引用
}

2.返回引用 vs 返回值区别

特性返回引用 (T&const T&)返回值 (T)
是否拷贝无拷贝(直接返回别名)有拷贝(创建副本)
能否修改返回值const 引用可以,const 引用不能不能(操作的是副本)
生命周期依赖返回的引用对象的生命周期独立于函数调用
性能高效(尤其对大对象)较低(拷贝成本)
安全性较低(需注意生命周期和可修改性)较高(独立副本)

3.几种使用方式的总结

引用型的返回值,从函数中返回引用,一定要保证在函数返回后,该引用的目标依然有效

(1) 可以返回 全局变量,静态变量的引用

int mml = 1;  // 全局变量int& mmll()
{return mml;
}int main()
{cout << "Address: " << &mml << " , mml = " << mml << endl; // Address: 00007FF6263E4004 , mml = 1// mmll() 最后返回的就是mml的别名mmll() = 67;  // Address: 00007FF6263E4004 , mml = 67}int& bar()
{static int g_bar = 10;cout << "Address: " << &g_bar << " , g_bar = " << g_bar << endl;return g_bar;
}int main()
{// bar() 最后返回的就是g_bar的别名bar() = 35;  // Address: 00007FF6A20E4008 , g_bar = 10//可以这样理解  int& ref = bar();①  ref = 35 ②// 2. ​赋值操作的本质​当执行 bar() = 35; 时:​调用 bar():返回 g_bar 的引用(相当于 int& ref = g_bar;)。​通过引用赋值:ref = 35; 直接修改 g_bar 的值。bar();  // Address: 00007FF6A20E4008 , g_bar = 35
}

(2) 可以返回成员变量的引用

class Counter {
private:int count = 0;
public:int& getCount() { return count;  // 返回非 const 引用,允许外部修改}
};int main() {Counter c;c.getCount() = 100;  // 直接修改私有成员std::cout << c.getCount();  // 输出 100
}

(3)  可以返回在堆中动态创建的对象的引用

int& hum()
{static int* p = new int(5);cout << "Address: " << p << ", *p = " << *p << endl;return *p;
}--> 这种可能会出现问题 每次调用都 new 一个新内存,可以从地址看到两次调用都是新 new 的对象
int& hum1() {int* p = new int(5); // 每次调用都 new 一个新内存return *p;
}int main() {// hum() 最后返回的就是p的别名hum() = 109;  // Address: 0000017313A8AA10, *p = 5hum();   //  Address: 0000017313A8AA10, *p = 109// hum1() 最后返回的就是p的别名hum1() = 109;  //  Address: 0000012FCE5BAA10, *p = 5hum1();    // Address: 0000012FCE5BAA10, *p = 5
}

(4)  可以返回调用对象自身的引用 ()

(5)  可以返回引用型参数本身

int& func(int& x)
{return x;  // 返回引用型参数本身
}int main()
{int a_val = 3;// func(a_val) 的返回值就代表 a_val本身,32就存到a_val中func(a_val) = 32;  cout << "a_val: " << a_val << endl;  // a_val: 32
}

(6) 不能返回局部变量的引用

  • 后果:返回的引用指向已销毁的内存,访问它会导致未定义行为(崩溃或数据损坏)。

  • 正确做法:

    • 返回值(拷贝)而非引用。

    • 使用静态局部变量(但需注意线程安全)。

    • 返回动态分配的对象(需手动管理内存,不推荐)。

int& getLocalVariable() {int x = 42;  // 局部变量return x;    // 错误!x 在函数结束后被销毁
}

4.总共有两大类的返回类型

  • 非常引用(没有const修饰)类型返回值

    • 通过引用可以修改目标

int& func(int& x)
{return x;  // 返回引用型参数本身
}int main()
{int a = 10;func(a) = 30;  // OK,可以修改}
  • 常引用(const修饰)型返回值

    • 通过引用不能修改目标

const int& func(int& x)
{return x;  // 返回引用型参数本身
}int main()
{int a = 10;func(a) = 30;  // ERROR,不可以修改}
返回 const 引用以保护内部数据
  • 如果不希望外部代码修改内部数据,返回 const 引用:

class SafeData {
public:int value = 42;const int& getValue() const { return value;  // 只读访问}
};int main() {SafeData data;const int& ref = data.getValue();// ref = 100;  // 错误!不能修改 const 引用
}
 ​

文章转载自:

http://LoGJzpDt.jcfqg.cn
http://KHnOY7eE.jcfqg.cn
http://4fAguV1k.jcfqg.cn
http://DheiqhHH.jcfqg.cn
http://ZxExlcBP.jcfqg.cn
http://WHEqmeQK.jcfqg.cn
http://SEhTA7Bc.jcfqg.cn
http://jV6QvZ1Q.jcfqg.cn
http://vlZxdGRM.jcfqg.cn
http://oe0qU4P3.jcfqg.cn
http://djXsw2Qj.jcfqg.cn
http://rY2JiybO.jcfqg.cn
http://LkMltn20.jcfqg.cn
http://6YrwdkPe.jcfqg.cn
http://cwFqQmwC.jcfqg.cn
http://t3o9uEfr.jcfqg.cn
http://z9hvdqf6.jcfqg.cn
http://iyHHIZJg.jcfqg.cn
http://4siYV1B0.jcfqg.cn
http://8H0AQrDh.jcfqg.cn
http://3Swnhwgy.jcfqg.cn
http://LY2fG1RT.jcfqg.cn
http://gZVcYAnD.jcfqg.cn
http://UAliIOYu.jcfqg.cn
http://ofOuixjS.jcfqg.cn
http://quVEAnKW.jcfqg.cn
http://912gLBmn.jcfqg.cn
http://PV6oLV7s.jcfqg.cn
http://KKY8JAJg.jcfqg.cn
http://T8gwJ9Go.jcfqg.cn
http://www.dtcms.com/wzjs/652007.html

相关文章:

  • 网站开发字典文档wordpress英文文章
  • 建网站用什么软件好网店推广工作内容
  • 成都建设银行网站首页网站定制设计价目表
  • 郑州专业网站建设公司首选网站开发加22760047
  • 广东哪家网站建设WordPress缩图不显示
  • 保定手机网站长沙自适应网站制作
  • 深圳网站建设公司怎么样南京网站建设知识
  • 网站的跳出率很高wordpress自动提交百度
  • 网站属于什么公司wordpress 首页显示分类文章
  • jsp 做网站需要什么软件购物的网站功能
  • 网站开发手机自适应wordpress 默认页面自适应
  • 找工作哪个网站好找wordpress 显示热度
  • 鹰潭网站建设公司网站开发工程师试用期
  • 如何进行企业营销型网站建设国内卡一卡二卡三网站视频
  • 建设银行信用卡中心网站wordpress企业站实例
  • 做外贸要看哪些网站合肥学室内设计学校
  • 购买商标去哪个网站wordpress如何卸载
  • wordpress 全站加密缅甸网站后缀
  • 如何做收费网站网站建立的公司
  • 网站建设验收确认书免费下载百度营消 营销推广
  • 免费的网站一般做网站
  • 网站建设有哪些岗位网站网络推广运营
  • 新手网站设计定价做二手货的网站
  • 服务中心网站建设意见深圳市龙华区住房和建设局网站
  • wordpress最快仿站企业网站需要什么
  • 网站设计报价表电子商务网站建设合同标准范文
  • 网站全能空间网站建设四个阶段
  • 华汇建设集团有限公司网站网站建设要考虑哪些
  • 学校网站网站建设营销型网站建设服务电话
  • 网站添加微信支付网站在工信部备案如何做