首页 > 代码库 > C++补习 局部变量,引用,构造函数后冒号
C++补习 局部变量,引用,构造函数后冒号
遇到以下写法,冒号后面是对变量赋值
class A{
int a;
int b;
public: A( int aa, int bb ):a(aa),b(bb) { }}
等价于:
A( int aa, int bb ){a=aa;b=bb;}
代码位置:
#include <iostream>using namespace std;class A{public: A(int msg){ this->msg = msg; cout<<"create A\n"; } ~A(){ cout<<"destroy A\n"; } int msg;};void swap(A& a, A& b) { A temp = a; a = b; b = temp;}int main(){ A a(1); A b(2); std::cout<<"a="<<a.msg<<"b="<<b.msg; swap(a, b); std::cout<<"a="<<a.msg<<"b="<<b.msg; std::cout<<"hellow world"; //a会被销毁吗? return 0;}
1 局部变量创建
直接在作用域内A a(对应无参数构造函数)以及A a(1) (带参数构造函数)在栈上创建对象
2 引用的问题
c的函数如果不带引用是按照值传递的!如下函数
void swap(A* a, A* b) { A* temp = a; a = b; b = temp;}
这样写交换对象是没用的。
因为指针是值传递的,离开了swap函数一切照旧
C++补习 局部变量,引用,构造函数后冒号
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。