在c++中传递参数给对象-请解释背后的逻辑
Passing arguments to objects in C++ - Please explain the logic behind this?
我开始学习c++,现在我迷路了,我看不出其中的逻辑。对我来说简直没有意义我怎么可能向对象添加参数,然后这些参数被程序使用。当然我能记住这个特性,但是有人能解释一下这背后的逻辑吗?c++里的其他东西都是有意义的,我想这句话可能也是有意义的,只是我没有看到它。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Person{
private:
string name;
int age;
public:
Person(){
name = "undefined";
age = 0;
};
Person(string newname){
name = newname;
age = 0;
};
Person(string newname, int newage){
name = newname;
age = newage;
};
string toString(){
stringstream ss;
ss << "Name is: " << name << " Age is : " << age;
return ss.str();
};
};
int main()
{
Person person1;
Person person2("David"); // I don't get this ???
Person person3("Mia", 35); // // I don't get this ???
cout << person1.toString() << endl;
cout << person2.toString() << endl;
cout << person3.toString() << endl;
return 0;
};
当你说你在传递参数给对象时,你实际上是在调用构造函数。调用具有匹配签名的构造函数
当你写Person person1;
时,默认构造函数是
Person(){
name = "undefined";
age = 0;
};
。
当你写Person person2("David");
时,
Person(string newname){
name = newname;
age = 0;
};
。
最后,当你做Person person3("Mia", 35);
时,
Person(string newname, int newage){
name = newname;
age = newage;
};
。
这个语句:Person person1;
正在调用这个构造函数:
Person();
Person person2("David");
正在调用这个构造函数:
Person(string newname);
这个Person person3("Mia", 35);
调用了这个构造函数:
Person(string newname, int newage);
由于构造函数是初始化Person类对象的函数,因此它们可以像任何函数一样接收参数。
当你定义一个新的c++类时,它的成员由你选择,这些函数中的每一个都是一个常规变量(或指针,或其他类的实例,等等),这是一个你已经熟悉的概念。
所以当你实例化一个类的新实例时,编译器确切地知道它应该分配多少内存,以及它的内部结构是什么——如何根据类成员将内存分成更小的部分。这就是为什么,当你调用一个构造函数,它知道如何"添加参数"到你的实例。
相关文章:
- 请解释"函数1(p1,p2,p3);"的输出
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 被解释为低级别const的const对象的地址
- 计算每个节点的树高,帮助我解释这个代码解决方案
- MSVC将仅移动结构参数解释为指针
- 内联程序集printf将整数解释为地址
- 有人能解释一下为什么下界是这样工作的吗C++的
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 有人能为我解释一下C++代码吗
- "std::unique_XXX"命名约定背后的基本原理是什么?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- std::背后的基本原理assignable_from可能的实现
- 有人能解释一下这些说法背后的逻辑是什么吗
- 有人可以向我解释下面指数函数背后的数学吗?
- 谁能解释一下这个简单逻辑背后的逻辑?我迷路了
- 这个C++测验答案背后的解释是什么
- 在c++中传递参数给对象-请解释背后的逻辑