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

对象成员初始化问题

来源B站的一位老师

如何用ai帮助我们学习编程?

#include <iostream>
using namespace std;
#include<string>class Address {
public:
string street;
string city;
string country;Address(string street, string city, string country) {
this->street = street;
this->city = city;
this->country = country;
}
};class Person {
public:
string name;
int age;
Address address; // 对象成员Person(string name, int age, Address address) {
this->name = name;
this->age = age;
this->address = address;
}void displayInfo() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Address: " << address.street << ", " << address.city << ", " << address.country << endl;
}
};int main() {
Address myAddress("123 Main St", "Cityville", "Countryland");
Person myPerson("John Doe", 25, myAddress);myPerson.displayInfo();return 0;
}

img

ai说,Person类未创建对象前,成员变量必须要先初始化,然后呢基本类型的初始化不是很严格,像int 只要分配4个字节的空间就行了,或者说初始化成了一些随机值。但是对象成员呢就很严格了,要调用构造函数。一开始我的纠结点是,在main函数里adress已经初始化了,为什么还是会报错呢,然后ai说,类必须调用构造函数去初始化。编译的时候我们不创建构造函数,编译器会自动生成无参构造函数,但是我们创建了一个有参的,他就不会自动生成无参的,那我又想了直接用有参构造函数去初始化,随便给值不行吗?ai说不行,至于为什么不行,它的回答是就是这样规定的。最终解决办法推荐加个初始化列表。

改进后


#include <iostream>
#include <string>
using namespace std;class Address {
public:string street;string city;string country;Address(string street, string city, string country) {this->street = street;this->city = city;this->country = country;}
};class Person {
public:string name;int age;Address address; // 使用初始化列表来初始化对象成员 addressPerson(string name, int age, Address address) : address(address) {this->name = name;this->age = age;}void displayInfo() {cout << "Name: " << name << endl;cout << "Age: " << age << endl;cout << "Address: " << address.street << ", " << address.city << ", " << address.country << endl;}
};int main() {Address myAddress("123 Main St", "Cityville", "Countryland");// 这里的 myAddress 会通过拷贝构造函数传递给 PersonPerson myPerson("John Doe", 25, myAddress);myPerson.displayInfo();return 0;
}

说实话,我不知道什么叫初始化成员列表,估计就是个标记作用,告诉编译器你不用给我初始化了,我之后会自己初始化的吗,就不劳您费心了。

http://www.jsqmd.com/news/390046/

相关文章:

  • 利用DeepSeek和qwen 3.5辅助生成SQL优化方法幻灯片视频
  • 基于Java的房产售房智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 实用指南:中国制造网关键字搜索接口实战:跨境B2B视角的精准匹配与本地化适配方案
  • 基于Java的房产行业营销智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的房产中介智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • OpenClaw怎么做到不串台、能并行、还总回对群 ✅(含源码解析)--OpenClaw系列第1期
  • 深入解析:[Linux]学习笔记系列 -- [base][drivers]firmware
  • Python get process memory,pc total memory via psutil
  • 目前靠谱的微信立减金回收平台推荐 - 京顺回收
  • C++初始02——函数参数缺省、函数重载和引用
  • C++初识—— 命名空间和基本输入输出
  • DBO-RBF多输出【23年新算法】基于蜣螂算法(DBO)优化径向基记忆神经网络(RBF)的多...
  • 地下管廊巡检小车,沿管道行驶,检测异常,输出巡检报告。
  • 深入解析:Vue3 + Element Plus 实现大文件分片上传组件(支持秒传、断点续传)
  • 导师又让重写?用户挚爱的AI论文写作软件 —— 千笔写作工具
  • 【GitHub项目推荐--Auto Company:全自主AI公司运营平台】⭐
  • 缩短键盘触发长按逻辑的停顿时间
  • Mihon/Tachiyomi漫画插件分析(侧重目前插件现状分析和英文插件推荐)
  • LLM | VeRL 相关文档汇总
  • SST专题(2)双有源桥式变换器单移相调制方法特性分析
  • 基于Java的户籍成员综合智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 2026最新!研究生必备的AI论文网站 —— 千笔·专业论文写作工具
  • 小钢炮MiniCPM-SALA 混合注意力架构与低成本训练范式
  • 基于Java的房产中介微信智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的户外用品销售智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 效率直接起飞! 降AIGC平台 千笔 VS 灵感ai,专科生专属利器!
  • 基于Java的户籍信息智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 救命神器 10个降AIGC平台深度测评:本科生降AI率必备指南
  • 深度测评AI论文写作软件,千笔·专业论文写作工具 VS 云笔AI,本科生必备神器!
  • 基于Java的户口医保登记智慧管理系统的设计与实现全方位解析:附毕设论文+源代码