C++程序设计方法2:基本语法
初始化列表
int a[] = {1,2,3};
int a[]{1,2,3}
以上两个式子等价
int a = 3+5;
int a = {3+5};
int a(3+5);
int a{3+5};
以上式子等价
int *i = new int(10);
double *d = new double{1.2f};
变量的类型推导与基于范围的循环
使用decltype可以对变量或者表达式结果的类型进行推导,如:
#include <iostream> using namespace std; struct
{
char *name;
}anon_u; struct
{
int d;
decltype(anon_u)id;
}anon_s[];//匿名的struct数组 int main()
{
decltype(anon_s)as;
cin >> as[].id.name;
}
基于范围的for循环语句
基于范围的for循环:在循环头的圆括号中,由冒号:分为两部分,第一部分用于迭代的变量,第二个部分用于表示将被迭代的范围如:
#include <iostream>
using namespace std; int main()
{
int arr[] = { ,, };
for (int e:arr)//for(auto e:arr)
{
cout << e << endl;
}
return ;
}
追踪返回类型的函数
可以将函数的返回类型的声明信息放到函数参数列表的后边进行声明,如:
普通函数的声明形式:
int func(char*ptr, int val);
zz追踪返回类型的函数的声明形式:
auto func(char *ptr, int val)->int;
追踪返回类型在原本函数返回值的位置使用auto关键字
成员函数的定义:类内部定义和类的外部定义
友元
有时候需要允许某些函数访问对象的私有成员,可以通过声明该函数为类的“友元”来实现
#include <iostream>
using namespace std; class Test
{
int id;
public:
friend void print(Test obj);
}; void print(Test obj)
{
cout << obj.id << endl;
}
//Test类中声明了Test类的友元函数print,该函数在实现时可以访问Test类定义的对象的私有成员;
在定义元素为对象的数组(ClassName array_var[NUM];)时,类必须提供默认构造函数的定义;
在构造函数的初始化列表中,还可以调用其他构造函数,被称为“委派构造函数”
class Info
{
public:
Info() { Init(); }
Info(int i) :Info() { id = i; }
Info(char c) :Info() { gender = c; }
private:
void Init(){}
int id{ };
char gender{ 'M' };
};
拷贝构造函数
函数调用时以类的对象为形参或者返回类的对象时,编译器会生成自动调用“拷贝构造函数”,在已有对象基础上生成新的对象;
拷贝构造函数是一种特殊的构造函数,他的参数是语言规定的,是同类对象的常量引用;
语义上:用参数对象的内容初始化当前对象
class Person
{
int id;
public:
person(const Person &src) {id = src.id;}
}
拷贝构造函数的例子:
#include <iostream>
using namespace std; class Test
{
public:
Test() { cout << "Test()" << endl; }
Test(const Test& src) { cout << "Test(const Test&)" << endl; }
~Test() { cout << "~Test()" << endl; }
}; void func1(Test obj)
{
cout << "func1()" << endl;
} Test func2()
{
cout << "func2()" << endl;
return Test();
} int main()
{
cout << "main()" << endl;
Test t;
func1(t);
t = func2();
return ;
}
C++程序设计方法2:基本语法的更多相关文章
- 《程序设计方法》【PDF】下载
内容简介 <程序设计方法>主要以方法为主导,结合C语言,把程序设计方法学研究中若干成熟的理论和方法用通俗易懂的语言描述出来.<程序设计方法>还选取趣味性强.技巧性高.能够启发学 ...
- mooc- 基本程序设计方法week1,week2
学习了第一单元我们几本可以写出10行左右的代码. week1:python编程之基本方法 1.从计算机到程序设计语言: 理解计算机:计算机是能够根据一组指令操作数据的机器. 功能性:可以进行数据计算 ...
- Entity Framework 基于方法的查询语法
实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...
- EF基于方法的查询语法
实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发人员 ...
- C++程序设计方法2:基本语法2
对象赋值-赋值运算符重载 赋值运算符函数是在类中定义的特殊的成员函数 典型的实现方式: ClassName& operator=(const ClassName &right) { i ...
- ruby创建某些“关键字”方法别名的语法
begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法.现在问题来了:怎么创建它们的别名方法? 如果用class Range;alias begin_x begi ...
- ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作
查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...
- Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
jquery.tmpl.js 是一个模板js ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...
随机推荐
- CC攻击原理及防范方法和如何防范CC攻击
一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...
- 加密算法之非对称加密RSA
一:非对称加密的由来 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有 ...
- MVC异常处理(异常捕获)
1.cshtml页面异常 2.Controller异常 3.路由参数异常. 4.页面不存在404 页面不存在404,可以通过配置config来处理 <customErrors mode=&quo ...
- [转]pyCharm最新2018激活码
https://blog.csdn.net/u014044812/article/details/78727496 因公司的需求,需要做一个爬取最近上映的电影.列车号.航班号.机场.车站等信息,所以需 ...
- MySQL InnoDB中的事务隔离级别和锁的关系
前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力. ...
- 删除了原有的offset之后再次启动会报错park Streaming from Kafka has error numRecords must not ...
笔者使用Spark streaming读取Kakfa中的数据,做进一步处理,用到了KafkaUtil的createDirectStream()方法:该方法不会自动保存topic parti ...
- net core体系-web应用程序-4net core2.0大白话带你入门-3asp.net core项目架构和配置文件解读
asp.net core web项目目录解读 Connected Services 和传统.net web项目相比,它的功能类似于添加webservice或者wcf service的引用.暂时用不 ...
- form表单利用iframe高仿ajax
html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Mysql8远程不能登录报错
mysql8远程登录报错Client does not support authentication protocol requested by server; consider upgrading ...
- yii的ActionForm组件
//文本框:textInput(); //密码框:passwordInput(); //单选框:radio(),radioList(); //复选框:checkbox(),checkboxList() ...